import sys
import os
import pandas as pd

# 添加项目根目录到Python路径
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))

from src.config.constants import OUTPUT_DIR

class ResultVerifier:
    """结果验证工具"""
    
    def __init__(self):
        """初始化验证工具"""
        self.result_file = os.path.join(OUTPUT_DIR, "matching_results.xlsx")
    
    def verify(self):
        """验证结果文件"""
        print("瀚越包装工具 - 结果验证")
        print("=" * 50)
        
        # 检查文件是否存在
        if not os.path.exists(self.result_file):
            print(f"❌ 结果文件不存在: {self.result_file}")
            return False
            
        print(f"结果文件存在: {self.result_file}")
        print("=" * 50)
        
        try:
            # 读取结果数据
            result_data = pd.read_excel(self.result_file)
            print(f"成功读取结果数据，共 {len(result_data)} 条记录")
            
            # 显示数据结构
            print(f"结果数据列: {', '.join(result_data.columns)}")
            
            # 显示前10行数据预览
            print("\n结果数据预览（前10行）:")
            print(result_data.head(10).to_string())
            
            # 统计不同类型的记录数量
            print("\n数据统计信息:")
            # 检查是否有'匹配状态'列
            if '匹配状态' in result_data.columns:
                status_counts = result_data['匹配状态'].value_counts()
                print("不同匹配状态的记录数量:")
                for status, count in status_counts.items():
                    print(f"  - {status}: {count} 条")
            else:
                print("结果数据中没有'匹配状态'列")
            
            # 检查是否有'包装类型'列
            if '包装类型' in result_data.columns:
                type_counts = result_data['包装类型'].value_counts(dropna=False)
                print("\n不同包装类型的记录数量:")
                for ptype, count in type_counts.items():
                    print(f"  - {ptype}: {count} 条")
            else:
                print("\n结果数据中没有'包装类型'列")
            
            # 检查是否存在空值
            print("\n空值统计:")
            null_counts = result_data.isnull().sum()
            null_columns = null_counts[null_counts > 0]
            if len(null_columns) > 0:
                for col, count in null_columns.items():
                    print(f"  - {col}: {count} 个空值 ({count/len(result_data)*100:.2f}%)")
            else:
                print("  无空值")
            
            print("\n✅ 结果验证完成！数据文件结构完整。")
            return True
            
        except Exception as e:
            print(f"❌ 验证过程中发生错误: {str(e)}")
            import traceback
            traceback.print_exc()
            return False

if __name__ == "__main__":
    # 创建并运行验证工具
    verifier = ResultVerifier()
    verifier.verify()